package dao;

import java.util.ArrayList;
import java.util.List;

import hbt.HbtUtil;
import bean.OficinaDeVentaVO;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public class HbtOficinaDeVentaDao {

	private static SessionFactory sf = null;
	private static HbtOficinaDeVentaDao instancia = null;

	public static HbtOficinaDeVentaDao getInstancia() {
		if (instancia == null) {
			sf = HbtUtil.getSessionFactory();
			instancia = new HbtOficinaDeVentaDao();
		}
		return instancia;
	}

	public void guardarOficinaDeVenta(OficinaDeVentaVO o) {
		Session session = sf.openSession();
		session.beginTransaction();
		session.persist(o);
		session.flush();
		session.getTransaction().commit();
		session.close();
	}

	public OficinaDeVentaVO obtenerOficinaDeVenta(OficinaDeVentaVO o) {
		Session session = sf.openSession();
		Transaction trans = session.beginTransaction();
		OficinaDeVentaVO oficina = (OficinaDeVentaVO) session.get(
				OficinaDeVentaVO.class, o.getNroOficina());
		trans.commit();
		session.close();
		return oficina;
	}

	@SuppressWarnings("unchecked")
	public List<OficinaDeVentaVO> obtenerTodas() {
		List<OficinaDeVentaVO> oficinas = new ArrayList<OficinaDeVentaVO>();
		Session session = null;
		session = sf.openSession();
		session.beginTransaction();
		oficinas = session.createQuery("from OficinaDeVentaVO").list();
		session.getTransaction().commit();
		session.close();
		return oficinas;
	}

	public void eliminarOficina(OficinaDeVentaVO o) {
		Session s = null;
		try {
			s = sf.openSession();
			s.beginTransaction();
			s.delete(o);
			s.flush();
			s.getTransaction().commit();
			s.close();

		} catch (HibernateException e) {
			e.printStackTrace();
			System.out.println("No  se puedo borrar el cliente");
			if (s != null)
				s.close();
		}
	}
}
